package main

import "fmt"

type A1 struct{ a int }
type B1 struct{ a, b int }

type C struct {
	A1
	B1
}

type D struct {
	B1
	b float32
}

func main() {
	c := C{A1{1}, B1{2, 3}}
	// fmt.Println(c.a) 调用 c.a 编译器会提示 Ambiguous reference 'a'
	fmt.Println(c)
	// 使用如下方法访问 a 就没有任何问题
	fmt.Println(c.A1.a)
	fmt.Println(c.B1.a)

	d := D{B1{1, 2}, 3.14}
	// 使用 `d.b` 是没问题的：它是 float32，而不是 `B` 的 `b`。
	// 如果想要内层的 `b` 可以通过 `d.B.b` 得到。
	fmt.Println(d.b)

}
